package com.ruoyi.system.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseIdEntity;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 保护装置信息对象 s_protect_device
 * 
 * @author ruoyi
 * @date 2023-07-05
 */
@Data
@ApiModel(value = "SProtectDevice", description = "保护装置信息对象")
public class SProtectDevice extends BaseIdEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    @ApiModelProperty("id")
    private String id;

    /** 保护装置版本号 */
    @Excel(name = "保护装置版本号")
    @ApiModelProperty("保护装置版本号")
    private String protectDeviceNo;

    /** 保护装置型号 */
    @Excel(name = "保护装置型号")
    @ApiModelProperty("保护装置型号")
    private String protectDeviceModel;

    /** 保护装置类型 */
    @Excel(name = "保护装置类型")
    @ApiModelProperty("保护装置类型")
    private String protectDeviceType;

    /** 厂家名称 */
    @Excel(name = "厂家名称")
    @ApiModelProperty("厂家名称")
    private String manufacturer;

    /** 原理图地址(","号分割) */
    @Excel(name = "原理图地址(','号分割)")
    @ApiModelProperty("原理图地址(','号分割)")
    private String principleImgUrl;

    /** 创建者 */
    @TableField(fill = FieldFill.UPDATE)
    @ApiModelProperty("创建者")
    private String createBy;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @TableField(fill = FieldFill.UPDATE)
    @ApiModelProperty("更新者")
    private String updateBy;

    /** 更新时间 */
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    public <T> QueryWrapper<T> queryWrapper(){
        QueryWrapper<T> wrapper=new QueryWrapper<>();

        wrapper.eq(StringUtils.isNotEmpty(id),"id" , id);
        wrapper.like(StringUtils.isNotEmpty(protectDeviceNo),"protect_device_no" , protectDeviceNo);
        wrapper.like(StringUtils.isNotEmpty(protectDeviceModel),"protect_device_model" , protectDeviceModel);
        wrapper.like(StringUtils.isNotEmpty(protectDeviceType),"protect_device_type" , protectDeviceType);
        wrapper.like(StringUtils.isNotEmpty(manufacturer),"manufacturer" , manufacturer);
        wrapper.like(StringUtils.isNotEmpty(principleImgUrl),"principle_img_url" , principleImgUrl);
        if(StringUtils.isNotEmpty(getKeyword())){
            wrapper.and(v -> {
                v.like("protect_device_model", getKeyword())
                        .or().like("manufacturer" , getKeyword())
                        .or().like("protect_device_type" , getKeyword());
            });
        }

        wrapper.orderByDesc("create_time");
        return wrapper;
    }

}
